<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>lesson 28</title>
  <script src="https://unpkg.com/vue@next"></script>

</head>
<body>
  <div id="root"></div>
</body>
<script>
  // mixin 混入
  // 组件data和methods优先级高于mixin中的data优先级，组件和mixin数据同时存在的时候，使用组件中的data数据，如果组件内部没有data，使用mixin中的数据
  // 声明周期函数，先执行mixin里面的，再执行组件里面的生命周期函数
 // 自定义的属性，组件中的属性优先级高于 mixin属性的优先级
  const myMixin = {
    data() {
      return{
        num: 3,
        count: 666,
      }
    },
    created() {
      console.log('mixin created')
    }
  }



  const app = Vue.createApp({
    data() {
      return {
        num: 1,
      }
    },
    mixins: [myMixin],


    created() {
      console.log('pages created')
    },

    methods: {
      handleClick(){
        // this.num += 1;
      }
    },

    template: `
      <div>
        {{num}}
        <child/>
      <div>
        <button @click="handleClick">add</button>
      </div>
      </div>
    `
  });

  app.component('child',{
    mixins: [myMixin],
    template: "<div>{{count}}</div>"
  })


  const vm = app.mount('#root');
</script>
</html>